// CodeGear C++Builder
// Copyright (c) 1995, 2015 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'ocv.comp.VideoWriter.pas' rev: 30.00 (Windows)

#ifndef Ocv_Comp_VideowriterHPP
#define Ocv_Comp_VideowriterHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#pragma pack(push,8)
#include <System.hpp>
#include <SysInit.hpp>
#include <System.SysUtils.hpp>
#include <System.Classes.hpp>
#include <System.AnsiStrings.hpp>
#include <ocv.highgui_c.hpp>
#include <ocv.core_c.hpp>
#include <ocv.core.types_c.hpp>
#include <ocv.imgproc_c.hpp>
#include <ocv.comp.Types.hpp>

//-- user supplied -----------------------------------------------------------

namespace Ocv
{
namespace Comp
{
namespace Videowriter
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TocvFrameSize;
class DELPHICLASS TocvVideoWriter;
//-- type declarations -------------------------------------------------------
#pragma pack(push,4)
class PASCALIMPLEMENTATION TocvFrameSize : public System::Classes::TPersistent
{
	typedef System::Classes::TPersistent inherited;
	
protected:
	virtual void __fastcall AssignTo(System::Classes::TPersistent* Dest);
	
private:
	Ocv::Core::Types_c::TCvSize FFrameSize;
	
public:
	__fastcall TocvFrameSize(void);
	__property Ocv::Core::Types_c::TCvSize cvFrameSize = {read=FFrameSize, write=FFrameSize};
	
__published:
	__property int Width = {read=FFrameSize.width, write=FFrameSize.width, nodefault};
	__property int Height = {read=FFrameSize.height, write=FFrameSize.height, nodefault};
public:
	/* TPersistent.Destroy */ inline __fastcall virtual ~TocvFrameSize(void) { }
	
};

#pragma pack(pop)

typedef void __fastcall (__closure *TocvOnGetVideoFileName)(System::TObject* Sender, System::UnicodeString &AFileName);

typedef void __fastcall (__closure *TocvOnGetVideoParams)(System::TObject* Sender, int &FrameWidth, int &FrameHeight, double &VideoFPS, System::AnsiString &CodecFourCC);

class PASCALIMPLEMENTATION TocvVideoWriter : public Ocv::Comp::Types::TocvDataReceiver
{
	typedef Ocv::Comp::Types::TocvDataReceiver inherited;
	
private:
	double FFps;
	int *FWriter;
	System::AnsiString FFourCC;
	System::Sysutils::TFileName FFileName;
	bool FEnabled;
	bool FVideoAsSource;
	TocvFrameSize* FFrameSize;
	TocvOnGetVideoFileName FOnGetVideoFileName;
	TocvOnGetVideoParams FOnGetVideoParams;
	void __fastcall SetFourCC(const System::AnsiString Value);
	void __fastcall SetFileName(const System::Sysutils::TFileName Value);
	void __fastcall SetEnabled(const bool Value);
	void __fastcall CloseWriter(void);
	void __fastcall OpenWriter(void);
	void __fastcall DoGetVideoFileName(void);
	void __fastcall DoGetVideoParams(void);
	
public:
	__fastcall virtual TocvVideoWriter(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TocvVideoWriter(void);
	virtual void __fastcall TakeImage(const Ocv::Comp::Types::_di_IocvImage IplImage);
	
__published:
	__property bool Enabled = {read=FEnabled, write=SetEnabled, default=0};
	__property System::AnsiString FourCC = {read=FFourCC, write=SetFourCC};
	__property System::Sysutils::TFileName FileName = {read=FFileName, write=SetFileName};
	__property bool VideoAsSource = {read=FVideoAsSource, write=FVideoAsSource, default=1};
	__property TocvFrameSize* FrameSize = {read=FFrameSize, write=FFrameSize};
	__property TocvOnGetVideoFileName OnGetVideoFileName = {read=FOnGetVideoFileName, write=FOnGetVideoFileName};
	__property TocvOnGetVideoParams OnGetVideoParams = {read=FOnGetVideoParams, write=FOnGetVideoParams};
};


//-- var, const, procedure ---------------------------------------------------
}	/* namespace Videowriter */
}	/* namespace Comp */
}	/* namespace Ocv */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_OCV_COMP_VIDEOWRITER)
using namespace Ocv::Comp::Videowriter;
#endif
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_OCV_COMP)
using namespace Ocv::Comp;
#endif
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_OCV)
using namespace Ocv;
#endif
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// Ocv_Comp_VideowriterHPP
